package com.zenithmind.note.pojo.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 评论状态枚举
 * 
 * @author ZenithMind
 * @since 2024-01-01
 */
@Getter
@AllArgsConstructor
public enum CommentStatus {
    
    /**
     * 无效状态
     */
    INVALID(0, "无效"),
    
    /**
     * 有效状态
     */
    VALID(1, "有效"),
    
    /**
     * 审核中状态
     */
    REVIEWING(2, "审核中"),
    
    /**
     * 已删除状态
     */
    DELETED(3, "已删除");
    
    /**
     * 状态码
     */
    private final Integer code;
    
    /**
     * 状态描述
     */
    private final String description;
    
    /**
     * 根据状态码获取枚举
     * 
     * @param code 状态码
     * @return 评论状态枚举
     */
    public static CommentStatus fromCode(Integer code) {
        if (code == null) {
            return null;
        }
        
        for (CommentStatus status : values()) {
            if (status.getCode().equals(code)) {
                return status;
            }
        }
        
        throw new IllegalArgumentException("未知的评论状态码: " + code);
    }
    
    /**
     * 判断是否为有效状态（可以被显示）
     * 
     * @return 是否有效
     */
    public boolean isVisible() {
        return this == VALID;
    }
    
    /**
     * 判断是否可以编辑
     * 
     * @return 是否可编辑
     */
    public boolean isEditable() {
        return this == VALID || this == REVIEWING;
    }
}
